home *** CD-ROM | disk | FTP | other *** search
/ Aminet 28 / Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso / Aminet / game / board / Crafty-15.19.lha / crafty-15.19 / src / data.c < prev    next >
C/C++ Source or Header  |  1998-09-13  |  41KB  |  882 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "chess.h"
  4. #include "evaluate.h"
  5.   
  6.    FILE           *input_stream;
  7.    FILE           *book_file;
  8.    FILE           *books_file;
  9.    FILE           *history_file;
  10.    FILE           *log_file;
  11.    FILE           *auto_file;
  12.    FILE           *book_lrn_file;
  13.    FILE           *position_file;
  14.    FILE           *position_lrn_file;
  15.    char           whisper_text[512];
  16.    int            whisper_value;
  17.    int            whisper_depth;
  18.    int            total_moves;
  19.    int            last_mate_score;
  20.    int            time_abort;
  21.    int            auto232;
  22.    int            auto232_delay;
  23.    signed char    abort_search;
  24.    char           log_filename[64];
  25.    char           history_filename[64];
  26.    int            number_of_solutions;
  27.    int            solutions[10];
  28.    int            solution_type;
  29.    char           cmd_buffer[512];
  30.    char           *args[32];
  31.    char           buffer[512];
  32.    int            nargs;
  33.    int            iteration_depth;
  34.    int            previous_search_value;
  35.    int            search_failed_high;
  36.    int            search_failed_low;
  37.    int            root_alpha;
  38.    int            root_beta;
  39.    int            root_value;
  40.    int            root_wtm;
  41.    int            root_move;
  42.    int            root_total_white_pieces;
  43.    int            root_total_white_pawns;
  44.    int            root_total_black_pieces;
  45.    int            root_total_black_pawns;
  46.    int            cpu_percent;
  47.    int            easy_move;
  48.    int            absolute_time_limit;
  49.    int            search_time_limit;
  50.    int            next_time_check;
  51.    int            burp;
  52.    int            ponder_move;
  53.    int            made_predicted_move;
  54.    int            ponder_moves[220];
  55.    int            num_ponder_moves;
  56.    unsigned int   opponent_start_time, opponent_end_time;
  57.    unsigned int   program_start_time, program_end_time;
  58.    unsigned int   start_time, end_time;
  59.    unsigned int   elapsed_start, elapsed_end;
  60.    unsigned int   evaluations;
  61.    int            book_move;
  62.    int            book_learn_eval[LEARN_INTERVAL];
  63.    int            book_learn_depth[LEARN_INTERVAL];
  64.    int            hash_maska;
  65.    int            hash_maskb;
  66.    unsigned int   pawn_hash_mask;
  67.    HASH_ENTRY      *trans_ref_wa;
  68.    HASH_ENTRY      *trans_ref_wb;
  69.    HASH_ENTRY      *trans_ref_ba;
  70.    HASH_ENTRY      *trans_ref_bb;
  71.    PAWN_HASH_ENTRY *pawn_hash_table;
  72.    int            history_w[4096], history_b[4096];
  73.    signed char    searched_this_root_move[256];
  74.    unsigned int   root_nodes[256];
  75.    PATH           pv[MAXPLY];
  76.    PATH           last_pv;
  77.    int            last_value;
  78.    int            pawn_advance[8];
  79.    int            pawn_value_b[64];
  80.    int            knight_value_b[64];
  81.    int            bishop_value_b[64];
  82.    int            rook_value_b[64];
  83.    int            queen_value_b[64];
  84.    int            king_value_b[64];
  85.    signed char    directions[64][64];
  86.    BITBOARD       w_pawn_attacks[64];
  87.    BITBOARD       b_pawn_attacks[64];
  88.    BITBOARD       knight_attacks[64];
  89.    BITBOARD       bishop_attacks[64];
  90.  
  91. #if defined(COMPACT_ATTACKS)
  92.   /* Stuff these into a structure to make the addressing slightly cheaper */
  93.   struct at at;
  94.   BITBOARD       diag_attack_bitboards[NDIAG_ATTACKS];
  95.   BITBOARD       anti_diag_attack_bitboards[NDIAG_ATTACKS];
  96.   DIAG_INFO      diag_info[64];
  97. #else
  98.   BITBOARD       bishop_attacks_rl45[64][256];
  99.   BITBOARD       bishop_attacks_rr45[64][256];
  100.   int            bishop_mobility_rl45[64][256];
  101.   int            bishop_mobility_rr45[64][256];
  102. #endif
  103.   BITBOARD       rook_attacks[64];
  104. #if !defined(COMPACT_ATTACKS)
  105.   BITBOARD       rook_attacks_r0[64][256];
  106.   BITBOARD       rook_attacks_rl90[64][256];
  107.   int            rook_mobility_r0[64][256];
  108.   int            rook_mobility_rl90[64][256];
  109. #endif
  110.  
  111.    POSITION       search;
  112.    POSITION       display;
  113.    BITBOARD       queen_attacks[64];
  114.    BITBOARD       king_attacks[64];
  115.    BITBOARD       king_attacks_1[64];
  116.    BITBOARD       king_attacks_2[64];
  117.    BITBOARD       obstructed[64][64];
  118.    unsigned int   w_pawn_random32[64];
  119.    unsigned int   b_pawn_random32[64];
  120.    BITBOARD       w_pawn_random[64];
  121.    BITBOARD       b_pawn_random[64];
  122.    BITBOARD       w_knight_random[64];
  123.    BITBOARD       b_knight_random[64];
  124.    BITBOARD       w_bishop_random[64];
  125.    BITBOARD       b_bishop_random[64];
  126.    BITBOARD       w_rook_random[64];
  127.    BITBOARD       b_rook_random[64];
  128.    BITBOARD       w_queen_random[64];
  129.    BITBOARD       b_queen_random[64];
  130.    BITBOARD       w_king_random[64];
  131.    BITBOARD       b_king_random[64];
  132.    BITBOARD       enpassant_random[65];
  133.    BITBOARD       castle_random_w[2];
  134.    BITBOARD       castle_random_b[2];
  135.    BITBOARD       wtm_random[2];
  136.    BITBOARD       endgame_random_w;
  137.    BITBOARD       endgame_random_b;
  138.    BITBOARD       w_rooks_random;
  139.    BITBOARD       b_rooks_random;
  140.    BITBOARD       threat_flag;
  141.    BITBOARD       clear_mask[65];
  142.    BITBOARD       clear_mask_rl45[65];
  143.    BITBOARD       clear_mask_rr45[65];
  144.    BITBOARD       clear_mask_rl90[65];
  145.    BITBOARD       set_mask[65];
  146.    BITBOARD       set_mask_rl45[65];
  147.    BITBOARD       set_mask_rr45[65];
  148.    BITBOARD       set_mask_rl90[65];
  149.    BITBOARD       file_mask[8];
  150.    BITBOARD       rank_mask[8];
  151.    BITBOARD       mask_not_rank8;
  152.    BITBOARD       mask_not_rank1;
  153.    BITBOARD       right_side_mask[8];
  154.    BITBOARD       left_side_mask[8];
  155.    BITBOARD       right_side_empty_mask[8];
  156.    BITBOARD       left_side_empty_mask[8];
  157.    BITBOARD       right_half_mask, left_half_mask;
  158.    BITBOARD       mask_abs7_w, mask_abs7_b;
  159.    BITBOARD       pawns_cramp_black;
  160.    BITBOARD       pawns_cramp_white;
  161.    BITBOARD       mask_advance_2_w;
  162.    BITBOARD       mask_advance_2_b;
  163.    BITBOARD       mask_left_edge;
  164.    BITBOARD       mask_right_edge;
  165.    BITBOARD       mask_corner_squares;
  166.    BITBOARD       promote_mask_w;
  167.    BITBOARD       promote_mask_b;
  168.    BITBOARD       mask_G2G3;
  169.    BITBOARD       mask_B2B3;
  170.    BITBOARD       mask_G6G7;
  171.    BITBOARD       mask_B6B7;
  172.    BITBOARD       mask_A7H7;
  173.    BITBOARD       mask_A2H2;
  174.    BITBOARD       center;
  175.    BITBOARD       stonewall_white;
  176.    BITBOARD       stonewall_black;
  177.    BITBOARD       mask_kr_trapped_w[3];
  178.    BITBOARD       mask_qr_trapped_w[3];
  179.    BITBOARD       mask_kr_trapped_b[3];
  180.    BITBOARD       mask_qr_trapped_b[3];
  181.    BITBOARD       good_bishop_kw;
  182.    BITBOARD       good_bishop_qw;
  183.    BITBOARD       good_bishop_kb;
  184.    BITBOARD       good_bishop_qb;
  185.    BITBOARD       light_squares;
  186.    BITBOARD       dark_squares;
  187.    BITBOARD       not_rook_pawns;
  188.    BITBOARD       plus1dir[65];
  189.    BITBOARD       plus7dir[65];
  190.    BITBOARD       plus8dir[65];
  191.    BITBOARD       plus9dir[65];
  192.    BITBOARD       minus1dir[65];
  193.    BITBOARD       minus7dir[65];
  194.    BITBOARD       minus8dir[65];
  195.    BITBOARD       minus9dir[65];
  196.    BITBOARD       mask_eptest[64];
  197.  
  198. #  if !defined(CRAY1)
  199.      BITBOARD       mask_1;
  200.      BITBOARD       mask_2;
  201.      BITBOARD       mask_3;
  202.      BITBOARD       mask_4;
  203.      BITBOARD       mask_8;
  204.      BITBOARD       mask_16;
  205.      BITBOARD       mask_32;
  206.      BITBOARD       mask_72;
  207.      BITBOARD       mask_80;
  208.      BITBOARD       mask_85;
  209.      BITBOARD       mask_96;
  210.      BITBOARD       mask_107;
  211.      BITBOARD       mask_108;
  212.      BITBOARD       mask_112;
  213.      BITBOARD       mask_118;
  214.      BITBOARD       mask_120;
  215.      BITBOARD       mask_121;
  216.      BITBOARD       mask_127;
  217. #  endif
  218.  
  219.    BITBOARD       mask_clear_entry;
  220.  
  221. #  if !defined(CRAY1)
  222.      unsigned char  first_ones[65536];
  223.      unsigned char  last_ones[65536];
  224. #  endif
  225.  
  226.    unsigned char  first_ones_8bit[256];
  227.    unsigned char  last_ones_8bit[256];
  228.    unsigned char  connected_passed[256];
  229.    BITBOARD       mask_kingside_attack_w1;
  230.    BITBOARD       mask_kingside_attack_w2;
  231.    BITBOARD       mask_kingside_attack_b1;
  232.    BITBOARD       mask_kingside_attack_b2;
  233.    BITBOARD       mask_queenside_attack_w1;
  234.    BITBOARD       mask_queenside_attack_w2;
  235.    BITBOARD       mask_queenside_attack_b1;
  236.    BITBOARD       mask_queenside_attack_b2;
  237.    BITBOARD       mask_pawn_protected_b[64];
  238.    BITBOARD       mask_pawn_protected_w[64];
  239.    BITBOARD       mask_pawn_isolated[64];
  240.    BITBOARD       mask_pawn_passed_w[6